package com.vq3.digitalizationsoftwareintegrates.Service.Spot_Check;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vq3.digitalizationsoftwareintegrates.Entity.Enum.Group_Type;
import com.vq3.digitalizationsoftwareintegrates.Entity.Enum.S_CType;
import com.vq3.digitalizationsoftwareintegrates.Entity.Enum.StatusType;
import com.vq3.digitalizationsoftwareintegrates.Entity.Info.ResultInfo;
import com.vq3.digitalizationsoftwareintegrates.Entity.Spot_Check.*;
import com.vq3.digitalizationsoftwareintegrates.Entity.Spot_Check.MongoDBEntity.MongoDB_S_C_Point_ContentEntity;
import com.vq3.digitalizationsoftwareintegrates.Entity.Spot_Check.MongoDBEntity.MongoDB_S_C_SaveSCDailyContextEntity;
import com.vq3.digitalizationsoftwareintegrates.Entity.Spot_Check.MongoDBEntity.MongoDB_S_C_WebSocketMessageEntity;
import com.vq3.digitalizationsoftwareintegrates.Entity.User.Permission_TBEntity;
import com.vq3.digitalizationsoftwareintegrates.Entity.User.URole_TBEntity;
import com.vq3.digitalizationsoftwareintegrates.Entity.User.UserEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface Spot_Check_FusionService {
    ResultInfo addPointName(String post_check_Point_Name);

    ResultInfo checkIsNull(Map<String, List<String>> map);

    ResultInfo loadImage(List<MultipartFile> files, List<String> thisNull, List<String> nameArr,List<String> funArr,List<String> benchmarkArr, HttpServletRequest httpServletRequest) throws IOException;

    List<S_C_Point_ContentEntity> downLoadImage(String pointName, UserEntity userEntity, S_CType temp) throws IOException;

    List<S_C_Point_ContentEntity> downLoadImage(String pointName, UserEntity userEntity, S_CType sCType, StatusType statusType)throws IOException;

    void reviseItem(String pointName, UserEntity userEntity, S_CType sCType, StatusType statusType);

    boolean check_ok_submit(String pointName, StatusType statusType, Group_Type group_type);

    boolean saveWebSocketMessage_S_C_Audit(MongoDB_S_C_WebSocketMessageEntity messageEntity);

    List<MongoDB_S_C_WebSocketMessageEntity> findMongoDB_S_C_WebSocketMessageEntity(Permission_TBEntity permission_tbEntity);

    List<MongoDB_S_C_SaveSCDailyContextEntity> findMongoDB_S_C_SaveSCDailyContextEntity(Permission_TBEntity permission_tbEntity);

    List<MongoDB_S_C_Point_ContentEntity> itemNameFindMongoDB_S_C_Point_ContentEntity(String itemName);

    IPage<S_C_PointEntity> findAllPointTODataCenter(int page);

    List<S_C_Point_ContentEntity> findAllPointContentToDataCenter(String itemName);

    List<S_C_PointEntity> groupIdFindPoint(int groupId);

    List<S_C_DatesEntity> getS_CContext(String pointName, Date stringToDate);

    List<S_C_Point_ContentEntity> getS_CContextItems(String pointName);

    void saveSCDailyContext (List<S_C_DatesEntity> s_c_datesEntities);

    IPage<S_C_PointEntity> conditionalQueries(Integer group,String pointName,int page);

    IPage<S_C_PointEntity> conditionalQueries(Integer group,boolean status,int page);

    IPage<S_C_PointEntity> conditionalQueries(String pointName,int page);

    List<S_C_DatesEntity> findAllPointDailyTODataCenter(int page) throws ParseException;

    List<S_C_StatusEntity> findAllS_CDailyStatus();

    int findTotalCurrent();

    IPage<S_C_DatesEntity> getS_CDataStatus(int page, String pointName, Date date1);

    List<S_C_PointEntity> groupIdFindSCPoint(Integer groupId);

    List<MongoDB_S_C_SaveSCDailyContextEntity> findMongoDBSCDaily(String pointName, Date stringToDate);

    boolean saveS_C_DailyAudit(MongoDB_S_C_SaveSCDailyContextEntity mongoDB_s_c_saveSCDailyContextEntity);
}
